import request from '@/utils/request';
import { requestWrapper, randomInt, randomDate } from '@/utils/mock';

// 获取个人信息
export function getUserProfile() {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/user/profile',
      method: 'get'
    }),
    // 模拟数据
    {
      userId: 1,
      username: 'admin',
      nickname: '系统管理员',
      sex: '1',
      avatar: '/profile/avatar/2023/06/01/avatar.jpg',
      email: 'admin@example.com',
      mobile: '13800138000',
      deptName: '总公司',
      roleNames: ['超级管理员'],
      joinDate: '2023-01-01',
      lastLoginIp: '127.0.0.1',
      lastLoginTime: '2023-06-01 10:00:00',
      status: '1',
      remark: ''
    }
  );
}

// 修改个人密码
export function updatePassword(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/user/password',
      method: 'put',
      data
    }),
    // 模拟数据
    null
  );
}

// 更新个人资料
export function updateProfile(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/user/profile',
      method: 'put',
      data
    }),
    // 模拟数据
    null
  );
}

// 上传头像
export function uploadAvatar(data) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/user/avatar',
      method: 'post',
      data,
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    }),
    // 模拟数据
    {
      avatarUrl: `/profile/avatar/2023/06/01/new_avatar.jpg`
    }
  );
}

// 获取个人操作日志
export function getUserLogs(params) {
  return requestWrapper(
    // 真实API请求
    () => request({
      url: '/user/logs',
      method: 'get',
      params
    }),
    // 模拟数据
    () => {
      const pageNum = params?.pageNum || 1;
      const pageSize = params?.pageSize || 10;
      const total = 35; // 模拟总数
      
      // 生成日志数据
      const generateLog = (index) => {
        const logContents = [
          '登录系统',
          '修改个人资料',
          '修改密码',
          '上传头像',
          '查看操作日志',
          '导出数据',
          '查看用户列表',
          '查看角色列表'
        ];
        
        // 生成时间（最近30天内）
        const createTime = randomDate(-30, 0);
        
        return {
          logId: index + 1,
          logContent: logContents[randomInt(0, logContents.length - 1)],
          ipAddress: '127.0.0.1',
          createTime
        };
      };
      
      // 模拟分页
      const startIndex = (pageNum - 1) * pageSize;
      const endIndex = Math.min(startIndex + pageSize, total);
      const list = Array.from({ length: endIndex - startIndex }, (_, i) => generateLog(startIndex + i));
      
      return {
        list,
        total,
        pageNum: parseInt(pageNum),
        pageSize: parseInt(pageSize)
      };
    }
  );
} 